package com.ragdollcat.thirdaicodegenerate.service;

import com.ragdollcat.thirdaicodegenerate.model.vo.app.FileContentVO;
import com.ragdollcat.thirdaicodegenerate.model.vo.app.FileHistoryVO;
import com.ragdollcat.thirdaicodegenerate.model.vo.app.FileNodeVO;
import jakarta.servlet.http.HttpServletRequest;

import java.util.List;

public interface AppVersionCtlService {

    /**
     * 根据appId 查询最新版本的文件列表
     * @param appId 应用ID
     * @return 查询结果，如果是vue项目需要树状展示
     */
    FileNodeVO getLatestFileList(Long appId, HttpServletRequest httpServletRequest);

    /**
     * 根据文件名和应用id 查询具体文件的内容返回
     *
     * @param appId              应用ID
     * @param fileName           文件名
     * @param httpServletRequest
     * @return 具体文件的内容
     */
    FileContentVO getFileContentByNameAndId(Long appId, String fileName, HttpServletRequest httpServletRequest);

    /**
     * 根据文件名和应用id,找到某个文件的所有历史版本
     * @param appId 应用ID
     * @param fileName  文件名
     * @param httpServletRequest
     * @return  该文件所有的历史版本
     */
    List<FileHistoryVO> getFileHistoryByNameAndId(Long appId, String fileName, HttpServletRequest httpServletRequest);


    /**
     * 根据文件名和应用id,具体的版本 查询具体文件的内容返回
     * 用于版本控制页面，进行版本比对
     * @param appId 应用ID
     * @param fileName 文件名
     * @param version 具体的版本号
     * @param httpServletRequest
     * @return 具体文件的内容
     */
    FileContentVO getFileContentByVersion(Long appId, String fileName, Integer version, HttpServletRequest httpServletRequest);

}
